<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    var latestTimeCatchTheBus = function (buses, passengers, capacity) {
      //先排序
      buses.sort((a, b) => a - b)
      passengers.sort((a, b) => a - b)
      // 乘客的起始位置， 当前车的容量
      let i = 0, c
      for (let t of buses) {
        // 每次重新初始化 当前车容量
        // 尽量坐满人
        for (c = capacity; c > 0 && i < passengers.length && passengers[i] <= t; c--, i++);
      }
      //i 已经过界了，i-- 是要获得最后一个可以做进去的乘客
      i--
      // 这里分好几种情况, 但赋初始值只需要两种  
      // 1、是最后一个车次时间(无法直接返回，有可能有空位但最后一个车次时间被占了) 2、最后一个乘客时间
      let ans = c > 0 ? buses[buses.length - 1] : passengers[i]
      // 判断时间是否 和 乘客冲突； 冲突就找前一个空时间
      while (passengers[i] === ans) {
        i--
        ans--
      }
      return ans
    };
  </script>
</body>

</html>